
#ifndef __AGENDA_H__
#define __AGENDA_H__
#pragma once

#include <deque>
#include <map>

using std::deque;
using std::map;

class Date
{
public:
	Date()
	{

	}

	Date( CTime const& time )
	{
		m_time = time;
	}

	Date( Date const& other )
	{
		m_time = other.m_time;
	}

	~Date(){}

	bool operator==( Date const& )
	{

		return true;
	}

	bool operator<( Date const& )
	{
		return true;
	}

private:
	CTime m_time;
};

class AgendaItem
{
public:
	AgendaItem();
	AgendaItem( CString const& desc, CTime const& time );
	~AgendaItem();


	operator bool() const
	{
		return true;
	}
private:
	CTime m_time;
};

// Unit item
class DailyAgenda
{
public:
	DailyAgenda();
	~DailyAgenda();

	BOOL RightTime( SYSTEMTIME const& );
	UINT Count();
private:
	deque<AgendaItem> m_daily; 
};


class Agenda
{
public:
	Agenda();
	~Agenda();


	void Update();

	CString Json(/* Whole Year */);
	CString Json( DWORD dwMonth );
	CString Json( Date date, int nWeek );
	CString Json( Date date );
	CString Json( Date dateFrom, Date dateEnd );

	DailyAgenda GetTodayAgenda();
private:	
	map<Date, DailyAgenda>	m_agenda;

protected:

};

#endif